home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / trueSpace 7.6 / tS761B8Std.exe / {app} / Scripts / MaterialEditor / Bricks / Compound / ThinFilm.Brick.xml < prev    next >
Extensible Markup Language  |  2008-06-10  |  2KB  |  40 lines

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <ME_BRICK GUID="{E2817455-FA2D-48c6-8EF3-C99C020C0F62}" Name="RtUThinFilm" GUIName="Thin Film" Description="The phong lighting model with thin film effect">
  3.     <ME_BRICK_INPUTPARAM GUID="{1FE68733-3C0E-4c7a-8387-AFADC7910E7B}" Name="DiffuseColor" Type="RtFloat4"/>
  4.     <ME_BRICK_INPUTPARAM GUID="{8D7193D7-7CDD-4e43-890B-88CB2B63EAB3}" Name="SpecularColor" Type="RtFloat4"/>
  5.     <ME_BRICK_INPUTPARAM GUID="{C66324A8-11A4-4f9a-889C-FA8331425ECB}" Name="Shininess" Type="RtFloat"/>
  6.     <ME_BRICK_INPUTPARAM GUID="{7DF5BCB1-252D-4de6-A732-E641F0018CD5}" Name="NormalVector" Type="RtFloat3"/>
  7.     <ME_BRICK_INPUTPARAM GUID="{2CA9D6D1-D1A6-45e6-8FCD-7EA9864C33B1}" Name="EyeDirection" Type="RtFloat3"/>
  8.     <ME_BRICK_INPUTPARAM GUID="{55F7A2A3-AF58-44f2-9232-FF319E969605}" Name="LightDirection" Type="RtFloat3"/>
  9.     <ME_BRICK_INPUTPARAM GUID="{8E07B081-A042-476f-A790-D1148092E759}" Name="LightColor" Type="RtFloat4"/>
  10.  
  11.     <ME_BRICK_INPUTPARAM GUID="{394A45CF-610A-4a05-8E42-D9230B2E5743}" Name="ThinFilmSample" Type="RtSampler1D"/>
  12.     <ME_BRICK_INPUTPARAM GUID="{6617E568-3283-4ec5-BFDE-327327D5A19D}" Name="FilmDepth" Type="RtFloat"/>
  13.  
  14.     <ME_BRICK_OUTPUTPARAM GUID="{F977DD6D-21E6-4ccb-879A-6C28E2360260}" Name="ResultColor" Type="RtFloat4"/>
  15.     <ME_BRICK_CODE><![CDATA[
  16.     void RtUThinFilm(in RtFloat4 DiffuseColor, in RtFloat4 SpecularColor, in RtFloat Shininess, 
  17.                   in RtFloat3 NormalVector, in RtFloat3 EyeDirection, in RtFloat3 LightDirection, 
  18.                   in RtFloat4 LightColor, in RtSampler1D ThinFilmSample, in RtFloat FilmDepth,
  19.                   out RtFloat4 ResultColor)
  20.     {
  21.         ResultColor = RtFloat4(0.0f, 0.0f, 0.0f, 0.0f);
  22.         RtFloat3 vNormal = NormalVector;
  23.         RtFloat3 vLightDir = LightDirection;
  24.         RtFloat3 vEye = EyeDirection;
  25.         RtFloat DiffuseCoef = rtx_Dot(vNormal, vLightDir);
  26.         if (DiffuseCoef>0)
  27.         {
  28.             RtFloat3 vHalf = rtx_CubeNormalize(vLightDir + vEye);
  29.             RtFloat SpecularCoef = rtx_Pow(rtx_Dot(vNormal, vHalf), Shininess);
  30.         
  31.             RtFloat view_depth = FilmDepth / DiffuseCoef;
  32.             float4 fringeCol = tex1D(ThinFilmSample, view_depth);
  33.         
  34.             ResultColor = (DiffuseColor * saturate(DiffuseCoef) + SpecularColor * SpecularCoef * fringeCol) * LightColor;
  35.         }
  36.         ResultColor.a = DiffuseColor.a;
  37.     }
  38.     ]]></ME_BRICK_CODE>
  39. </ME_BRICK>
  40.